Przykłady stanów alternatywnych w wyrażeniach wykresu
Te przykłady mają w zamierzeniu pokazywać najlepsze praktyki dotyczące użycia stanów alternatywnych przez programistów i/lub najbardziej zaawansowanych użytkowników programu QlikView. Przedstawione przykłady można znaleźć w pliku: Alternate States Functionality.qvw
Synchronizowanie selekcji między stanami
Poniższych wyrażeń można użyć w pojedynczym wykresie:
- count({$} DISTINCT [Invoice Number])
- count({State1} DISTINCT [Invoice Number])
- count({State2} DISTINCT [Invoice Number])
Z tą metodą związany jest pewien problem; programista QlikView musi powielić selekcje (listy wartości i obiekty Multi Box) dla wszystkich trzech stanów, aby użytkownicy mogli dokonać właściwych selekcji dotyczących różnych stanów. W wielu sytuacjach programista QlikView będzie chciał mieć zestaw „wspólnych” selekcji dostępnych dla wszystkich stanów. Umożliwi to użytkownikowi końcowemu ustawienie kontekstu dla różnych wykresów, a następnie skorzystanie z określonych selekcji, aby pokazać różnice między stanami. Aby zapewnić spójność określonych selekcji w różnych stanach, można użyć analizy zestawów.
- count({State1<Year = $::Year, Month = $::Month>} DISTINCT [Invoice Number])
- count({State2<Year = $::Year, Month = $::Month>} DISTINCT [Invoice Number])
Programista QlikView zachowa selekcje wartości miesiąca i roku w stanie State1 i State2 zsynchronizowane z selekcjami wartości miesiąca i roku w stanie default. Programista QlikView może w razie potrzeby dodawać elementy do modyfikatorów zestawów, aby zapewnić spójność jeszcze większej liczby pól między stanami.
Operatory zestawów
Można użyć operatorów zestawów (+, *, -, /) ze stanami. Następujące wyrażenia są prawidłowe i będą liczyć odrębne numery faktur będące w stanie default lub stanie State1.
Przykłady:
- count({$ + State1} DISTINCT [Invoice Number])
liczy odrębne numery faktur zawarte w sumie stanów <default> i State1.
- count({1 - State1} DISTINCT [Invoice Number])
liczy odrębne numery faktur ze stanem innym niż State1.
- count({State1 * State2} DISTINCT [Invoice Number])
liczy odrębne numery faktur, które są zarówno w stanie <default>, jak i stanie State1.
Niejawne definicje wartości pól
Operatorów zestawów można także używać z funkcjami elementów P() i E(). Funkcje te są dostępne tylko w obrębie wyrażeń zestawów.
Przykłady:
- count({$<[Invoice Number] = p({State1} [Invoice Number])>} DISTINCT [Invoice Number])
To wyrażenie liczy odrębne numery faktur w stanie <default> na podstawie możliwych numerów faktur dostępnych w stanie State1.
Jest ono bardzo podobne do następującego wyrażenia:
- count({$<[Invoice Number] = State1::[Invoice Number]>} DISTINCT [Invoice Number])
Różnica między wyrażeniami polega na tym, że w pierwszym możliwe wartości numeru faktury ze stanu State1 są przekazywane do stanu default. W drugim wyrażeniu wybrane wartości ze stanu State1 są przekazywane do stanu default. Jeśli użytkownik nie wybrał żadnego numeru faktury w stanie State1, żadne wartości numerów faktur nie zostaną przekazane do stanu default.
Operatorów zestawów najlepiej używać w obrębie modyfikatorów zestawów. Poniższe wyrażenie znajduje przecięcie możliwych numerów faktur ze stanu State1 i State2 i przekazuje te wartości do numerów faktur w stanie default.
Przykłady:
- count({$<[Invoice Number] = p({State1} [Invoice Number]) * p({State2} [Invoice Number])>} DISTINCT [Invoice Number])
Wyrażenie znajdujące przecięcie numerów faktur w stanie <default> i State1 to:
- count({$<[Invoice Number] = p({$} [Invoice Number]) * p({State1} [Invoice Number])>} DISTINCT [Invoice Number])
To wyrażenie może wydawać się mylące, ponieważ używa stanu (w tym przykładzie <default>) zarówno w funkcji elementu, jak i w identyfikatorze zestawu. Należy pamiętać, że funkcja elementu p($) zwraca możliwe wartości w stanie default. Identyfikator zestawu/stanu {$} jest modyfikowany przez wynik funkcji elementu. Wszystkie selekcje faktur istniejące obecnie w stanie default są zastępowane wartościami z przecięcia funkcji elementu.
Należy pamiętać, że powyższe wyrażenie w dalszym ciągu nie jest całkowicie poprawne, ponieważ nie udaje mu się zsynchronizować wspólnych selekcji między stanami default a State1. Poniżej znajduje się wyrażenie, które wykonuje tę operację:
Przykłady:
- count({$<[Invoice Number] = p({$} [Invoice Number]) * p({State1<Year = $::Year, Month = $::Month>} [Invoice Number])>} DISTINCT [Invoice Number])
Jak poprzednio programista QlikView może dodać pola do modyfikatora, aby zapewnić spójność selekcji między różnymi stanami.